package com.ruoyi.statistic.service;


import com.ruoyi.statistic.domain.StatisticStudentBaseInfo;
import com.ruoyi.statistic.domain.vo.*;

import java.util.List;

public interface IStatisticStudentBaseInfoService {

    /**
     * 查询学生管理
     *
     * @param id 学生管理主键
     * @return 学生管理
     */
    public StatisticStudentBaseInfo selectStatisticStudentBaseInfoById(Long id);


    /**
     * 查询学生管理
     *
     * @param code
     * @return
     */
    public StatisticStudentBaseInfo selectStatisticStudentBaseInfoByCode(String code);


    /**
     * 查询学生管理列表
     *
     * @param statisticStudentBaseInfo 学生管理
     * @return 学生管理集合
     */
    public List<StatisticStudentBaseInfo> selectStatisticStudentBaseInfoList(StatisticStudentBaseInfo statisticStudentBaseInfo);


    /**
     * 查询学生管理列表
     *
     * @param statisticStudentListSearchVo
     * @return
     */
    public List<StatisticStudentBaseInfo> selectStatisticStudentBaseInfoListBySearchVo(StatisticStudentListSearchVo statisticStudentListSearchVo);


    /**
     * 查询学生管理列表（针对辅导员，返回全国系统上人数）
     *
     * @param statisticStudentListSearchVo
     * @return
     */
    public List<StatisticStudentBaseInfo> selectCounsellorStatisticStudentBaseInfoListBySearchVo(StatisticStudentListSearchVo statisticStudentListSearchVo);

    /**
     * 新增学生管理
     *
     * @param statisticStudentBaseInfo 学生管理
     * @return 结果
     */
    public int insertStatisticStudentBaseInfo(StatisticStudentBaseInfo statisticStudentBaseInfo);

    /**
     * 修改学生管理
     *
     * @param statisticStudentBaseInfo 学生管理
     * @return 结果
     */
    public int updateStatisticStudentBaseInfo(StatisticStudentBaseInfo statisticStudentBaseInfo);

    /**
     * 批量删除学生管理
     *
     * @param ids 需要删除的学生管理主键集合
     * @return 结果
     */
    public int deleteStatisticStudentBaseInfoByIds(Long[] ids);

    /**
     * 删除学生管理信息
     *
     * @param id 学生管理主键
     * @return 结果
     */
    public int deleteStatisticStudentBaseInfoById(Long id);


    /**
     * 更新学生带兵
     *
     * @param vo
     */
    public void batchUpdateLead(StatisticUpdateLeadVo vo);


    /**
     * 批量更新系别专业
     *
     * @param req
     */
    public void batchUpdateDegree(StatisticUpdateDegreeVo req);


    /**
     * 基础学生数据系别统计
     *
     * @param year
     * @return
     */
    public List<BaseDepartmentVo> baseDepartmentCount(String year);


    /**
     * 基础学生数据专业统计
     *
     * @param year
     * @return
     */
    public List<BaseMajorVo> baseMajorCount(String year);
}
